package com.partvoyage.client.outil;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.partvoyage.client.service.infopoint.InfoPointService;
import com.partvoyage.client.service.infopoint.InfoPointServiceAsync;
import com.partvoyage.shared.InfoPointBean;

public class InfoBulleMarker extends Composite implements ClickHandler {
	private TextBox commentTextBox = new TextBox();
	private TextBox coutTextBox = new TextBox();
	private ListBox avecQuiListBox = new ListBox();
	private Button boutonValidation = new Button();
	// private Button boutonTemporaireToutSupprimer = new Button();
	private MapWidget map;
	// private LatLng latLng;
	// private Integer markerId;
	private InfoPointBean infoPointBean;

	private final InfoPointServiceAsync infoPointService = GWT
			.create(InfoPointService.class);

	public void setComment(String comment) {
		commentTextBox.setText(comment);
	}

	public void setCout(String cout) {
		coutTextBox.setText(cout);
	}

	/**
	 * Constructs an OptionalTextBox with the given caption on the check.
	 * 
	 * @param caption
	 *            the caption to be displayed with the check box
	 */
	public InfoBulleMarker(PointSurLaCarte pointSurLaCarte, MapWidget map) {
		this.map = map;
		this.infoPointBean = pointSurLaCarte.getInfo();
		VerticalPanel mainPanel = new VerticalPanel();
		HorizontalPanel tablePanel = new HorizontalPanel();
		FlexTable tableInfo = new FlexTable();
		tableInfo.setWidget(0, 0, new Label("Commentaire"));
		tableInfo.setWidget(0, 1, commentTextBox);
		tableInfo.setWidget(1, 0, new Label("Coût"));
		tableInfo.setWidget(1, 1, coutTextBox);
		tableInfo.setWidget(2, 0, new Label("Avec qui"));
		avecQuiListBox.addItem("Benjamin");
		avecQuiListBox.addItem("Bob");
		avecQuiListBox.addItem("Sophie");
		tableInfo.setWidget(2, 1, avecQuiListBox);
		tablePanel.add(tableInfo);
		mainPanel.add(tablePanel);
		// bouton de validation
		HorizontalPanel boutonPanel = new HorizontalPanel();
		boutonPanel.add(boutonValidation);
		boutonValidation.addClickHandler(this);
		boutonValidation.setText("Ok");
		mainPanel.add(boutonPanel);
		// bouton a supprimer plus tard
		// HorizontalPanel boutonSuppressionTemporairePanel = new
		// HorizontalPanel();
		// boutonSuppressionTemporairePanel.add(boutonTemporaireToutSupprimer);
		// boutonTemporaireToutSupprimer.addClickHandler(this);
		// boutonTemporaireToutSupprimer.setText("Tout supprimer");
		// mainPanel.add(boutonSuppressionTemporairePanel);

		initWidget(mainPanel);

		// Give the overall composite a style name.
		setStyleName("example-OptionalCheckBox");
	}

	public void onClick(ClickEvent event) {
		Object sender = event.getSource();
		if (sender == boutonValidation) {
			// on met à jour le contenu de l'info bulle
//			infoPointService.update(infoPointBean.getMarkerId(),
//					infoPointBean.getProjetId(), infoPointBean.getLatitude(),
//					infoPointBean.getLongitude(), commentTextBox.getText(),
//					null, coutTextBox.getText(),
//					avecQuiListBox.getValue(avecQuiListBox.getSelectedIndex()),
//					null, "",infoPointBean.getZoomLevel(),
//					// textBox.setEnabled(checkBox.isChecked());
//					new AsyncCallback<InfoPointBean>() {
//						public void onFailure(Throwable caught) {
//							Window.alert("erreur lors de la mise à jour  du point du projet "
//									+ infoPointBean.getProjetId());
//						}
//
//						@SuppressWarnings("deprecation")
//						public void onSuccess(InfoPointBean result) {
//							GWT.log("Information mise à jour pour le point "
//									+ result.getMarkerId());
//						}
//					});

		}
		// else if (sender == boutonTemporaireToutSupprimer) {
		// infoBulleMarkerService.deleteAll(new AsyncCallback() {
		// public void onFailure(Throwable caught) {
		// Window.alert("error during getting users");
		// }
		//
		// @SuppressWarnings("deprecation")
		// public void onSuccess(Object result) {
		// GWT.log("Tout a bien été supprimé");
		// }
		// });
		// }
	}

}
